package com.gogowan.agroenterprise.utils;


/**
 * 检查电话号码，电子邮件地址，网址。其他 通用检验方法应该也在这里
 * 
 * @author zk
 */
public final class Validators {
	
	/**
	 * 替换字符
	 * @param number
	 * @return
	 */
	public static String filterNumber(String number) {
		return number.replaceAll("[ \\.,\\-\\(\\)]", "");
	}

	/**
	 * 检测电话号码
	 * @param number
	 * @throws GeneratorException
	 */
	public static boolean validateNumber(String number)  {
		if (number.matches("\\+?[0-9]+")) {
			return true;
		}
		return false;
	}

	/**
	 * 检测电话号码
	 * @param text
	 * @return
	 */
	public static boolean validataPhone(String text) {
		//如果为空不处理
		if(Utils.isEmpty(text))
		{
			return true;
		}
		// 定义正则表达式规则
		String regex = "(^\\d{3}-\\d{8}$)|(^\\d{4}-\\d{8}$)|(^\\d{8}$)|(^\\d{11}|(^\\d{12}$)";
		// 判断输入数据是否为电话号码
		if (text.matches(regex)) {
			return true;
		}
		return false;
	}

	/**
	 * 检测网址
	 * @param url
	 * @throws GeneratorException
	 */
	public static boolean validateUrl(String url){
		//如果为空不处理
		if(Utils.isEmpty(url))
		{
			return true;
		}
		if (isBasicallyValidURI(url)) {
			return true;
		}
		return false;
	}

	/**
	 * 检测网址
	 * @param uri
	 * @return
	 */
	private static boolean isBasicallyValidURI(String uri) {
		if (uri == null || uri.indexOf(' ') >= 0 || uri.indexOf('\n') >= 0) {
			return false;
		}
		int period = uri.indexOf('.');
		
		if (period >= uri.length() - 2) {
			return false;
		}
		return period >= 0 || uri.indexOf(':') >= 0;
	}

	/**
	 * 检测邮箱
	 * @param email
	 * @throws GeneratorException
	 */
	public static boolean validateEmail(String email){
		//如果为空不处理
		if(Utils.isEmpty(email))
		{
			return true;
		}
		if (email.matches("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}$")) {
			return true;
		}
		return false;
	}

}
